package com.solution.admin.auth.dao;

import java.util.List;
import java.util.Map;

import com.solution.admin.auth.entity.OrgEntity;
import com.solution.common.dao.BaseDao;
import com.solution.common.page.PageBean;
import com.solution.common.page.PageParam;

/**
 * 组织dao接口
 * 
 * @author diwankang
 * @version 2017年4月5日
 */
public interface OrgDao extends BaseDao<OrgEntity> {

	/**
	 * 查询组织信息列表
	 * 
	 * @param pageParam
	 * @param params
	 * @return
	 * @exception/throws [异常类型][异常说明]
	 * @author diwankang
	 * @date 2017年4月12日 下午2:50:01
	 * @modify <scy> <2017年4月12日 下午2:50:01>
	 */
	public PageBean listOrgByPage(PageParam pageParam, Map<String, Object> params);

	/**
	 * 保存组织信息
	 * 
	 * @param orgEntity
	 * @return 返回主键
	 * @exception/throws [异常类型][异常说明]
	 * @author diwankang
	 * @date 2017年4月12日 下午2:50:26
	 * @modify <scy> <2017年4月12日 下午2:50:26>
	 */
	public long saveOrgInfo(OrgEntity orgEntity);

	/**
	 * 查询所有组织信息
	 * 
	 * @return
	 * @exception/throws [异常类型][异常说明]
	 * @author diwankang
	 * @date 2017年4月12日 下午2:51:57
	 * @modify <scy> <2017年4月12日 下午2:51:57>
	 */
	public List<OrgEntity> listOrg(Map<String, Object> map);

	/**
	 * 查询某经销商下的所有组织信息
	 * 
	 * @param dealerId
	 *            经销商ID
	 * @return 符合条件的组织实体集合
	 * @author Renlf
	 * @date 2017-5-6 下午 13:49:02
	 */
	public List<OrgEntity> listOrgByDealerId();

	/**
	 * 根据orgCode获取对象的组织信息
	 * 
	 * @param paramMap
	 * @return
	 * @exception/throws [异常类型][异常说明]
	 * @author diwankang
	 * @date 2017年4月13日 下午2:12:15
	 * @modify <scy> <2017年4月13日 下午2:12:15>
	 */
	public OrgEntity getOrgById(Long id);

	/**
	 * 根据orgCode模糊查询
	 * 
	 * @param code
	 * @return
	 * @exception/throws [异常类型][异常说明]
	 * @author diwankang
	 * @date 2017年4月13日 下午2:42:38
	 * @modify <scy> <2017年4月13日 下午2:42:38>
	 */
	public int getCountByCode(String code);

	/**
	 * 修改组织信息
	 * 
	 * @author: solin
	 * @date: 2017年4月21日 下午4:49:15
	 * @param orgEntity
	 *            组织信息实体对象
	 * @return
	 */
	public int updateOrg(OrgEntity orgEntity);

	/**
	 * 更新组织的树形节点
	 * 
	 * @param id
	 *            组织编号
	 * @param orgName
	 *            组织名称
	 * @param parentId
	 *            上级组织编号
	 * @param status
	 *            状态
	 * @return 是否成功
	 */
	public boolean updateTreeNode(Long id, String orgName, Long parentId, Integer status);
	/**
	 * 取得指定经销商的组织位列表
	 * @param org
	 * @return
	 * @author qiaoenyin
	 * @date 2017年5月25日 上午9:50:42
	 */
	public List<OrgEntity> listOrg(OrgEntity org);
	
	/**
	 * 查询新增组织的orgCode
	 * @param orgCode
	 * @return
	 */
	public String getMaxOrgCode(String orgCode);

}
